﻿#pragma once

#include "ICiudad.h"
#include "IAtraccion.h"
#include "IExcursion.h"

class CiudadMock : public ICiudad
{
public:
	CiudadMock(Cadena nombre);

	Cadena ObtenerNombre() const;

	bool operator==(const ICiudad& c) const;

private:
	Cadena m_Nombre;
};

class AtraccionMock : public IAtraccion
{
public:
	AtraccionMock(Cadena identificador, Cadena nombre, nat horarioInicio, nat horarioFin, pCiudad ciudad, nat precio, Iterador<Tupla<nat, int, Cadena>> calificaciones);

	Cadena ObtenerIdentificador() const;
	Cadena ObtenerNombre() const;
	nat ObtenerHorarioInicio() const;
	nat ObtenerHorarioFin() const;
	pCiudad ObtenerCiudad() const;
	nat ObtenerPrecio() const;
	Iterador<Tupla<nat, int, Cadena>> ObtenerCalificaciones() const;

	bool operator==(const IAtraccion& a) const;

private:
	Cadena m_Identificador;
	Cadena m_Nombre;
	nat m_HorarioInicio;
	nat m_HorarioFin;
	pCiudad m_Ciudad;
	nat m_Precio;
	Iterador<Tupla<nat, int, Cadena>> m_Calificaciones;
};

class ExcursionMock : public IExcursion
{
public:
	ExcursionMock(nat nroExcursion, nat fecha, nat costoTotal, Iterador<Tupla<pCiudad, TipoTransporte, nat, nat>> itinerario);

	nat ObtenerNroExcursion() const;
	nat ObtenerFecha() const;
	nat ObtenerCostoTotal() const;
	Iterador<Tupla<pCiudad, TipoTransporte, nat, nat>> ObtenerItinerario() const;

	bool operator==(const IExcursion& e) const;

private:
	nat m_NroExcursion;
	nat m_Fecha;
	nat m_CostoTotal;
	Iterador<Tupla<pCiudad, TipoTransporte, nat, nat>> m_Itinerario;
};
